In the field of data processing, clients such as different companies, enterprises, organizations and authorities have a need for hardware and software resources in order to perform various data processing operations. In this disclosure, the term “data processor” is used for short to represent any equipment that can be used for computer executed operations involving data handling e.g. relating to analysis, calculation, compilation, conversion and data storage.
Traditionally, the clients themselves may own and maintain all the resources they need for data processing which can be quite costly and time-consuming, though. For example, considerable knowledge and skills are required to first find out what type of resources is needed, and to acquire and install those resources. The client thus often needs to employ skilled staff and/or hire consultants to enable efficient use of resources. Furthermore, as the technique is developing and progressing rapidly in the field of computers and software, purchased or hired resources tend to become out-of-date very quickly and must frequently be replaced by new resources with better performance, which is naturally costly and time-consuming. Another problem is that a client may need a great amount of resources for a very limited period to make some large operation once or just a few times a year, e.g. related to economics, statistics or stock inventory, while very little resources are used during the remainder periods. The client thus has to make investments in resources enough to cope with such peak usage and also when demands and operation change over time.
In recent years, it has become possible for clients to hire and utilize shared resources for data processing, e.g. residing in large data centers comprising a great range of processors, computers and data storages. Effectively, all the needed resources may be available from such a data center and the clients do not have to make their own investments in costly resources. Resources are thus allocated to clients for executing requested processing operations, and new resources can be allocated again to the client whenever needed.
Some load balancing functionality is typically employed for distributing incoming processing requests evenly over different processing machines so as to avoid bottlenecks and increase resource utilization in a data center or the like. In this disclosure, the term “processing machine” is used to represent a node or server in a data center or the like which node or server comprises one or more data processors that can be used for data processing for incoming processing requests. A set of processing machines is commonly referred to as a “cluster” for short. Further, a requested processing operation is referred to as a “data processing job”, or just “job” for short, which can have different durations and requirements depending on the processing request.
In this field there are basically two types of data processing machines: 1) Physical Machine, PM, which is a stationary processing equipment with fixed capacity, and 2) Virtual Machine, VM, which is a temporary processing equipment with flexible capacity in that resources are created and configured on a dynamic basis specifically for each processing request. A VM basically exists only while the job is executed and the resources are released after completion of the job, while a PM exists more or less permanently regardless of whether any job is executed or not. A set of PMs is sometimes referred to as a “native cluster” and a set of VMs is referred to as a “virtual cluster”. Further, a “hybrid cluster” denotes a combination of native and virtual clusters. VMs are typically used in a so-called cloud computing context. The VM is thus not part of the native cluster and it can be seen as an additional external resource to augment the native, or physical, cluster. The following description will chiefly be concerned with the usage of PMs.
A job scheduling function, or “job scheduler”, is typically employed for selecting one or more suitable PMs for executing a requested data processing job which may be composed of multiple tasks that can be executed by the same PM or by different separate PMs. For example, each task of a data processing job may be executed by a separate PM. In other words, the job scheduler tries to find and select one or more PMs that should be capable of performing the job.
FIG. 1 illustrates a communication scenario where a system 100 of different shared resources are utilized for handling and executing processing requests, denoted “PRs”, from different clients 102. In this example, resources are available from a native cluster 100b of PMs and from a virtual cluster 100b of VMs. The incoming processing requests PRs are distributed by a job scheduler 104 to suitable PMs and VMs. More than one job scheduler may also be used to serve the system 100 of PMs and VMs and some load balancing function, not shown, may be applied to distribute incoming processing requests over the job schedulers.
However, it is a problem that the selection of processing machines for a requested processing job may not be optimal or even successful in that a selected processing machine may not be able to execute the processing job to satisfaction due to various current circumstances. Therefore, the clients may experience bad performance and certain Service Level Agreements, SLAs, may be violated when an expected performance is not accomplished or fulfilled, particularly when service requirements are strict. Another problem is that some processing machines may be heavily loaded and congested while others may be under-utilized, even if some load balancing function is applied. For example, some processing machines may tend to receive processing jobs of long duration such that their resources are occupied to a great extent.